第一步: 构建潜在语义空间
- 分词:将备注信息切分成词
- 清理:将标点符号清理掉
- 构建词在备注信息中的词频矩阵, 如:
\[ \begin{array}{c | ccc} \text{matrix} & \text{备注1} & \text{备注2} & \text{备注n...} \\ \hline \text{残疾} & 0 & 1 & \cdots \\ \text{父母} & 1 & 1 & \cdots \\ \text{建议} & 0 & 2 & \cdots \\ \vdots & \vdots & \vdots & \vdots \\ \end{array} \]
进行加权,用
tf-idf
方法根据如下公式对矩阵进行svd分解
\[ \{X\}=\{W\}\{S\}\{P\} \]
如果你使用python,你可以使用numpy.linalg.SVD
函数来做这个分解。
筛选对角矩阵
S
中最大的n个特征值,然后选出W
和P
中与特征值对应的特征向量,组合起来形成相应的\(W'\)
和\(P'\)
最后根据公式反向计算词文矩阵
X'
,得到潜在语义空间:
\[ \{W'\}\{S'\}\{P'\}=\{X'\} \]
得到的X’矩阵中,每一行都是一个词向量。
- 求备注向量
在原始的词频矩阵X中,每一列代表一个备注中,词的词频,我们把它叫做备注的词频向量——\(V_i\)
,其中下标i
表示第i
个备注。由于在上一步中我们求得了每个词的语义向量。所以备注的词频向量就可以转换成词所在的语义空间向量\(V'_i\)
。让向量\(w_j\)
表示X’中j词的语义向量。假如矩阵中有n个词。
\[ M = X'.T * V_i = \left[ \begin{array} \vdots\\ w_j \\ \vdots \end{array} \right] * V_i = \left[ \begin{array} \vdots\\ w'_j \\ \vdots \end{array} \right] \]
\[ V'_i = \sum_{j=0}^n w'_j \]
第二步:使用机器学习算法预测备注是否能参加测试
\( V'_i \)
就是备注文档的语义向量,这样我们就得到了备注文档的语义。以此为输入,以该备注的被试是否能够参加测试为输出,使用适当的机器学习方法即可预测一个备注是否能够参加测试。